genlib AB6717DB0D1B41694C2B63A16584EEFB by Unknown

genlib AB6717DB0D1B41694C2B63A16584EEFB by Unknown

autore:Unknown
Format: epub


Metodi di classe

I metodi di classe sono simili ai metodi statici, per il fatto che possono essere richiamati prima ancora di instanziare un oggetto della classe oppure utilizzando un’istanza della classe. Ma ai metodi di classe viene passato implicitamente come primo parametro la classe cui appartengono e quindi è possibile programmarli in modo più semplice, come nel Listato 15.2.

Listato 15.2 File circle_cm.py.

"""circle_cm module: contains the Circle class."""

class Circle:

"""Circle class"""

all_circles = [] ← Variabile contenente la lista di tutti i cerchi che sono stati creati

pi = 3.14159

def __init__(self, r=1):

"""Create a Circle with the given radius"""

self.radius = r

self.__class__.all_circles.append(self)

def area(self):

"""determine the area of the Circle"""

return self.__class__.pi * self.radius * self.radius

@classmethod ← [1]

def total_area(cls): ← [2]

total = 0

for c in cls.all_circles: ← [3]

total = total + c.area()

return total

>>> import circle_cm

>>> c1 = circle_cm.Circle(1)

>>> c2 = circle_cm.Circle(2)

>>> circle_cm.Circle.total_area()

15.70795

>>> c2.radius = 3

>>> circle_cm.Circle.total_area()

31.415899999999997

Qui si vede l’uso del decoratore @classmethod prima del metodo def [1]. Il parametro della classe è tradizionalmente cls [2]. Potete utilizzare cls al posto di self.__class__ [3].

Utilizzando un metodo di classe anziché un metodo statico, non sarete costretti a specificare esplicitamente il nome della classe in total_area. Di conseguenza, tutte le sottoclassi di Circle potranno comunque richiamare total_are e far riferimento ai propri membri, non a quelli di Circle.

VERIFICA – I METODI DI CLASSE

Scrivete un metodo di classe simile a total_area() che restituisca il totale delle circonferenze di tutti i cerchi.



scaricare



Disconoscimento:
Questo sito non memorizza alcun file sul suo server. Abbiamo solo indice e link                                                  contenuto fornito da altri siti. Contatta i fornitori di contenuti per rimuovere eventuali contenuti di copyright e inviaci un'email. Cancelleremo immediatamente i collegamenti o il contenuto pertinenti.